home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / WarriorsProgress.sit / Warrior’s Progress / source code / Source / Libraries / Integers / Integers.cp next >
Text File  |  1997-06-28  |  2KB  |  122 lines

  1. // Integers.cp
  2.  
  3. #ifndef Integers_h
  4. #include "Integers.h"
  5. #endif
  6.  
  7. bool CanAdd( uint8 a, uint8 b )
  8.   {
  9.     return maxuint8 - a >= b;
  10.   }
  11.  
  12. bool CanAdd( uint16 a, uint16 b )
  13.   {
  14.     return maxuint16 - a >= b;
  15.   }
  16.  
  17. bool CanAdd( uint32 a, uint32 b )
  18.   {
  19.     return maxuint32 - a >= b;
  20.   }
  21.  
  22. bool CanAdd( int8 a, int8 b )
  23.   {
  24.     return ( a >= 0 )
  25.                 ? ( maxint8 - a >= b )
  26.                 : ( minint8 - a <= b );
  27.   }
  28.  
  29. bool CanAdd( int16 a, int16 b )
  30.   {
  31.     return ( a >= 0 )
  32.                 ? ( maxint16 - a >= b )
  33.                 : ( minint16 - a <= b );
  34.   }
  35.  
  36. bool CanAdd( int32 a, int32 b )
  37.   {
  38.     return ( a >= 0 )
  39.                 ? ( maxint32 - a >= b )
  40.                 : ( minint32 - a <= b );
  41.   }
  42.  
  43. bool CanSubtract( uint8 a, uint8 b )
  44.   {
  45.     return a >= b;
  46.   }
  47.  
  48. bool CanSubtract( uint16 a, uint16 b )
  49.   {
  50.     return a >= b;
  51.   }
  52.  
  53. bool CanSubtract( uint32 a, uint32 b )
  54.   {
  55.     return a >= b;
  56.   }
  57.  
  58. bool CanSubtract( int8 a, int8 b )
  59.   {
  60.     return ( a >= 0 )
  61.                 ? ( a - maxint8 <= b )
  62.                 : ( a - minint8 >= b );
  63.   }
  64.  
  65. bool CanSubtract( int16 a, int16 b )
  66.   {
  67.     return ( a >= 0 )
  68.                 ? ( a - maxint16 <= b )
  69.                 : ( a - minint16 >= b );
  70.   }
  71.  
  72. bool CanSubtract( int32 a, int32 b )
  73.   {
  74.     return ( a >= 0 )
  75.                 ? ( a - maxint32 <= b )
  76.                 : ( a - minint32 >= b );
  77.   }
  78.  
  79. bool CanMultiply( uint8 a, uint8 b )
  80.   {
  81.     return maxuint8 / a >= b;
  82.   }
  83.  
  84. bool CanMultiply( uint16 a, uint16 b )
  85.   {
  86.     return maxuint16 / a >= b;
  87.   }
  88.  
  89. bool CanMultiply( uint32 a, uint32 b )
  90.   {
  91.     return maxuint32 / a >= b;
  92.   }
  93.  
  94. bool CanMultiply( int8 a, int8 b )
  95.   {
  96.     int16 p = int16(a) * int16(b);
  97.     return p >= minint8 && p <= maxint8;
  98.   }
  99.  
  100. bool CanMultiply( int16 a, int16 b )
  101.   {
  102.     int32 p = int32(a) * int32(b);
  103.     return p >= minint16 && p <= maxint16;
  104.   }
  105.  
  106. bool CanMultiply( int32 a, int32 b )
  107.   {
  108.     if ( a == 0 )
  109.         return true;
  110.     
  111.     if ( a > 0 )
  112.         if ( b > 0 )
  113.             return maxint32 / a >= b;
  114.          else
  115.             return minint32 / a <= b;
  116.      else
  117.         if ( b > 0 )
  118.             return minint32 / a >= b;
  119.          else
  120.             return maxint32 / a <= b;
  121.   }
  122.